JavaScript ã® WebHID API ã䜿çšããŠããã¥ãŒãã³ã€ã³ã¿ãŒãã§ãŒã¹ããã€ã¹ïŒHIDïŒãæ€åºããã³æäœããããã®å æ¬çãªã¬ã€ããããã€ã¹ã®åæããã£ã«ã¿ãªã³ã°ãããã³æ¥ç¶ã®ãã¹ããã©ã¯ãã£ã¹ã«ã€ããŠåŠã³ãŸãã
ããã³ããšã³ã WebHID ããã€ã¹åæïŒJavaScript ã䜿çšããæ¥ç¶ããã€ã¹ã®æ€åº
WebHID API ã¯ãéåžžãã€ãã£ãã¢ããªã±ãŒã·ã§ã³ã§ã®ã¿ã¢ã¯ã»ã¹å¯èœãªå¹ åºããã¥ãŒãã³ã€ã³ã¿ãŒãã§ãŒã¹ããã€ã¹ïŒHIDïŒãšãŠã§ãã¢ããªã±ãŒã·ã§ã³ãçŽæ¥éä¿¡ã§ããå¯èœæ§ãç§ããŠããŸããããã«ãããã²ãŒã ã³ã³ãããŒã©ãŒãã«ã¹ã¿ã å ¥åããã€ã¹ãç§åŠæ©åšãªã©ã®ç¹æ®ãªããŒããŠã§ã¢ãšå¯Ÿè©±ãã驿°çãªãŠã§ããšã¯ã¹ããªãšã³ã¹ãäœæããããã®åºæ¿çãªå¯èœæ§ãéãããŸãããã®å æ¬çãªã¬ã€ãã§ã¯ãç®çã® HID ããã€ã¹ãšã®æ¥ç¶ã確ç«ããããã®éèŠãªæåã®ã¹ãããã§ããããã€ã¹åæã®åºæ¬æŠå¿µã«ã€ããŠè©³ãã説æããŸãã
WebHID API ãšã¯äœã§ããïŒ
WebHID API ã䜿çšãããšããŠã§ãã¢ããªã±ãŒã·ã§ã³ã¯ãã¥ãŒãã³ã€ã³ã¿ãŒãã§ãŒã¹ããã€ã¹ã«ã¢ã¯ã»ã¹ã§ããŸãããããã®ããã€ã¹ã¯ã次ã®ãããªå¹ åºãã«ããŽãªãå å«ããŸãã
- ã²ãŒã ã³ã³ãããŒã©ãŒïŒãžã§ã€ã¹ãã£ãã¯ãã²ãŒã ããããã¬ãŒã·ã³ã°ãã€ãŒã«
- å ¥åããã€ã¹ïŒããŒããŒããããŠã¹ããã©ãã¯ããŒã«
- ç£æ¥çšå¶åŸ¡ïŒç¹æ®ãªã³ã³ãããŒã«ããã«ãã»ã³ãµãŒã€ã³ã¿ãŒãã§ãŒã¹
- ç§åŠæ©åšïŒããŒã¿åéããã€ã¹ã枬å®ããŒã«
- ã«ã¹ã¿ã ããŒããŠã§ã¢ïŒç¹å®ã®ç®çã®ããã«äœæãããç¹æ³šã®å ¥åããã€ã¹
éå®ç㪠HID ãµããŒããæäŸããŠããå€ããã©ãŠã¶ API ãšã¯ç°ãªããWebHID API 㯠HID ããã€ã¹ãžã®çŽæ¥ã¢ã¯ã»ã¹ãæäŸããéçºè ã¯ãããªããã§ã€ã³ã¿ã©ã¯ãã£ããªãŠã§ãã¢ããªã±ãŒã·ã§ã³ãäœæã§ããŸãããªã¢ãŒãã©ãã§ããããã¢ãŒã ãå¶åŸ¡ããããã«ã¹ã¿ã å ¥åããã€ã¹ã§ 3D ã¢ãã«ãæäœãããããŠã§ãããŒã¹ã®ããã·ã¥ããŒãã§ã»ã³ãµãŒããŒã¿ãçŽæ¥åä¿¡ãããããããšãæ³åããŠã¿ãŠãã ãããããããã¹ãŠããã©ãŠã¶å ã§å¯èœã§ãã
HID ããã€ã¹åæã®çè§£
HID ããã€ã¹ãšå¯Ÿè©±ããåã«ããŠã§ãã¢ããªã±ãŒã·ã§ã³ã¯ãŠãŒã¶ãŒã®ã·ã¹ãã ã«æ¥ç¶ãããŠããããã€ã¹ãæ€åºããå¿ èŠããããŸãããã®ããã»ã¹ã¯ããã€ã¹åæãšåŒã°ããŸããWebHID API ã¯ããã³ã㌠IDïŒVIDïŒãšè£œå IDïŒPIDïŒã«åºã¥ããŠããŸãã¯ããåºç¯ãªãã£ã«ã¿ãŒã䜿çšããŠãç¹å®ã® HID ããã€ã¹ãžã®ã¢ã¯ã»ã¹ãèŠæ±ããã¡ã«ããºã ãæäŸããŸãã
éåžžããã®ããã»ã¹ã«ã¯æ¬¡ã®æé ãå«ãŸããŸãã
- ããã€ã¹ã¢ã¯ã»ã¹ã®èŠæ±ïŒãŠã§ãã¢ããªã±ãŒã·ã§ã³ã¯ã
navigator.hid.requestDevice()ã䜿çšããŠãHID ããã€ã¹ãéžæããããã«ãŠãŒã¶ãŒã«ä¿ããŸãã - ããã€ã¹ã®ãã£ã«ã¿ãªã³ã°ïŒãã£ã«ã¿ãŒãæå®ããŠããŠãŒã¶ãŒã«æç€ºãããããã€ã¹ã®ãªã¹ããçµã蟌ãããšãã§ããŸãããããã®ãã£ã«ã¿ãŒã¯ãããã€ã¹ã® VID ãš PID ã«åºã¥ããŠããŸãã
- ããã€ã¹ã®éžæã®åŠçïŒãŠãŒã¶ãŒã¯ãªã¹ãããããã€ã¹ãéžæããŸãã
- ããã€ã¹ã®ãªãŒãã³ïŒã¢ããªã±ãŒã·ã§ã³ã¯ãéžæããããã€ã¹ãžã®æ¥ç¶ã確ç«ããŸãã
- ããŒã¿è»¢éïŒæ¥ç¶ã確ç«ããããšãã¢ããªã±ãŒã·ã§ã³ã¯ããã€ã¹ãšã®éã§ããŒã¿ãéåä¿¡ã§ããŸãã
ããã€ã¹åæã®ã¹ããããã€ã¹ãããã¬ã€ã
1. ãã£ã«ã¿ãŒã䜿çšããããã€ã¹ã¢ã¯ã»ã¹ã®èŠæ±
navigator.hid.requestDevice() ã¡ãœããã¯ãHID ããã€ã¹ãžã®ã¢ã¯ã»ã¹ãèŠæ±ããããã®ãšã³ããªãã€ã³ãã§ããããã¯ããªãã·ã§ã³ã® `filters` åŒæ°ãåãåããŸããããã¯ãæ€çŽ¢ããããã€ã¹ã® VID ãš PID ãæå®ãããªããžã§ã¯ãã®é
åã§ãã
ç¹å®ã® VID ãš PID ãæã€ããã€ã¹ãžã®ã¢ã¯ã»ã¹ãèŠæ±ããæ¹æ³ã®äŸã次ã«ç€ºããŸãã
async function requestHIDDevice() {
try {
const devices = await navigator.hid.requestDevice({
filters: [
{
vendorId: 0x1234, // ããã€ã¹ã®ãã³ã㌠ID ã«çœ®ãæããŸã
productId: 0x5678 // ããã€ã¹ã®è£œå ID ã«çœ®ãæããŸã
},
// å¿
èŠã«å¿ããŠãä»ã®ããã€ã¹ã®ãã£ã«ã¿ãŒã远å ããŸã
]
});
if (devices.length > 0) {
const device = devices[0]; // æåã«éžæããããã€ã¹ã䜿çšããŸã
console.log("HID ããã€ã¹ãèŠã€ãããŸããïŒ", device);
// ããã€ã¹ãéããŠéä¿¡ãéå§ããŸã
await openHIDDevice(device);
} else {
console.log("HID ããã€ã¹ãéžæãããŠããŸããã");
}
} catch (error) {
console.error("HID ããã€ã¹ã®èŠæ±ãšã©ãŒïŒ", error);
}
}
// 䜿çšäŸïŒäŸïŒãã¿ã³ã¯ãªãã¯ã«ãã£ãŠããªã¬ãŒãããŸãïŒïŒ
document.getElementById('requestButton').addEventListener('click', requestHIDDevice);
éèŠãªèæ ®äºé ïŒ
- ãã³ã㌠IDïŒVIDïŒãšè£œå IDïŒPIDïŒïŒãããã¯ãUSB ããã³ Bluetooth ããã€ã¹ã«å²ãåœãŠãããäžæã®èå¥åã§ãã察象ã®ããã€ã¹ã® VID ãš PID ãã補é å ã®ããã¥ã¡ã³ãããååŸããããã·ã¹ãã ããŒã«ïŒWindows ã®ããã€ã¹ãããŒãžã£ãŒãmacOS ã®ã·ã¹ãã æ å ±ããŸã㯠Linux ã® `lsusb` ãªã©ïŒã䜿çšããŠååŸããå¿ èŠããããŸãã
- ãŠãŒã¶ãŒã®åæïŒ
requestDevice()ã¡ãœããã¯ããã©ãŠã¶å¶åŸ¡ã®ã¢ã¯ã»ã¹èš±å¯ããã³ããããŠãŒã¶ãŒã«è¡šç€ºããã¢ã¯ã»ã¹ãèš±å¯ãã HID ããã€ã¹ãéžæã§ããããã«ããŸããããã¯ãæªæã®ãããŠã§ããµã€ãããŠãŒã¶ãŒã®åæãªãã«æ©å¯æ§ã®é«ãããŒããŠã§ã¢ã«ã¢ã¯ã»ã¹ããã®ãé²ãããã®éèŠãªã»ãã¥ãªãã£å¯Ÿçã§ãã - è€æ°ã®ãã£ã«ã¿ãŒïŒ`filters` é åã«è€æ°ã®ãã£ã«ã¿ãŒãå«ããŠãç°ãªã VID ãš PID ãæã€ããã€ã¹ãžã®ã¢ã¯ã»ã¹ãèŠæ±ã§ããŸããããã¯ãã¢ããªã±ãŒã·ã§ã³ãè€æ°ã®ããŒããŠã§ã¢æ§æããµããŒãããŠããå Žåã«åœ¹ç«ã¡ãŸãã
2. ããã€ã¹æ å ±ã®ååŸ
ãŠãŒã¶ãŒãããã€ã¹ãéžæãããšãrequestDevice() ã¡ãœãã㯠HIDDevice ãªããžã§ã¯ãã®é
åãè¿ããŸããå HIDDevice ãªããžã§ã¯ãã«ã¯ãVIDãPIDãusagePageãusageãã³ã¬ã¯ã·ã§ã³ãªã©ãããã€ã¹ã«é¢ããæ
å ±ãå«ãŸããŠããŸãããã®æ
å ±ã䜿çšããŠãããã€ã¹ãããã«èå¥ããã³æ§æã§ããŸãã
async function openHIDDevice(device) {
try {
await device.open();
console.log("HID ããã€ã¹ãéãããŸããïŒ", device.productName);
// å
¥åã¬ããŒãããªãã¹ã³ããŸã
device.addEventListener("inputreport", event => {
const { data, reportId } = event;
const uint8Array = new Uint8Array(data.buffer);
console.log(`åä¿¡ããå
¥åã¬ããŒã ${reportId}:`, uint8Array);
// å
¥åã¬ããŒãããŒã¿ãåŠçããŸã
});
device.addEventListener("disconnect", event => {
console.log("HID ããã€ã¹ãåæãããŸããïŒ", device.productName);
// ããã€ã¹ã®åæãåŠçããŸã
});
} catch (error) {
console.error("HID ããã€ã¹ã®ãªãŒãã³ãšã©ãŒïŒ", error);
}
}
ããã€ã¹ã®ããããã£ïŒ
vendorIdïŒããã€ã¹ã®ãã³ã㌠IDãproductIdïŒããã€ã¹ã®è£œå IDãproductNameïŒè£œåã®äººéãèªããååãcollectionsïŒããã€ã¹ã® HID ã³ã¬ã¯ã·ã§ã³ïŒã¬ããŒããæ©èœãªã©ïŒãèšè¿°ãã HIDCollectionInfo ãªããžã§ã¯ãã®é åãããã¯éåžžã«è€éã«ãªãå¯èœæ§ããããè€éãªããã€ã¹ã«ã®ã¿å¿ èŠã§ãã
3. ããã€ã¹ã®æ¥ç¶ãšåæã®åŠç
WebHID API ã¯ãããã€ã¹ãæ¥ç¶ãŸãã¯åæããããšãã«ã¢ããªã±ãŒã·ã§ã³ã«éç¥ããã€ãã³ããæäŸããŸããnavigator.hid ãªããžã§ã¯ãã® connect ã€ãã³ããš disconnect ã€ãã³ãããªãã¹ã³ã§ããŸãã
navigator.hid.addEventListener("connect", event => {
const device = event.device;
console.log("HID ããã€ã¹ãæ¥ç¶ãããŸããïŒ", device);
// ããã€ã¹ã®æ¥ç¶ãåŠçããŸãïŒäŸïŒããã€ã¹ãå床éããŸãïŒ
});
navigator.hid.addEventListener("disconnect", event => {
const device = event.device;
console.log("HID ããã€ã¹ãåæãããŸããïŒ", device);
// ããã€ã¹ã®åæãåŠçããŸãïŒäŸïŒãªãœãŒã¹ãã¯ãªãŒã³ã¢ããããŸãïŒ
});
æ¥ç¶ç®¡çã®ãã¹ããã©ã¯ãã£ã¹ïŒ
- æ¥ç¶æã®ååæïŒããã€ã¹ãæ¥ç¶ãããããããã€ã¹ãååæããŠãã¢ããªã±ãŒã·ã§ã³ãææ°ã®ãªã¹ããæã£ãŠããããšã確èªããããšããå§ãããŸãã
- åææã®ãªãœãŒã¹ã®ã¯ãªãŒã³ã¢ããïŒããã€ã¹ãåæãããããããã«é¢é£ä»ããããŠãããªãœãŒã¹ãè§£æŸããŸãïŒäŸïŒããã€ã¹æ¥ç¶ãéããã€ãã³ããªã¹ããŒãåé€ããŸãïŒã
- ãšã©ãŒåŠçïŒããã€ã¹ãæ¥ç¶ã«å€±æããããäºæããã«åæããããããç¶æ³ãé©åã«åŠçããããã«ãå ç¢ãªãšã©ãŒåŠçãå®è£ ããŸãã
é«åºŠãªããã€ã¹ãã£ã«ã¿ãªã³ã°æè¡
åºæ¬ç㪠VID ããã³ PID ãã£ã«ã¿ãªã³ã°ã«å ããŠãWebHID API ã¯ç¹å®ã®ããã€ã¹ãã¿ãŒã²ããã«ããããã®ããé«åºŠãªææ³ãæäŸããŸããããã¯ãè€æ°ã®ã€ã³ã¿ãŒãã§ãŒã¹ãŸãã¯æ©èœãæã€ããã€ã¹ãæ±ãå Žåã«ç¹ã«åœ¹ç«ã¡ãŸãã
1. 䜿çšç¶æ³ããŒãžãšäœ¿çšç¶æ³ã«ãããã£ã«ã¿ãªã³ã°
HID ããã€ã¹ã¯ãããã€ã¹ãæäŸããæ©èœã®ã¿ã€ããå®çŸ©ãã*䜿çšç¶æ³ããŒãž*ãš*䜿çšç¶æ³*ã«ç·šæãããŠããŸããããšãã°ãããŒããŒãã¯ãæ±çšãã¹ã¯ãããã䜿çšç¶æ³ããŒãžã«å±ãããããŒããŒãã䜿çšç¶æ³ããããŸãã䜿çšç¶æ³ããŒãžãšäœ¿çšç¶æ³ã«åºã¥ããŠããã€ã¹ããã£ã«ã¿ãªã³ã°ããŠãç¹å®ã®ããã€ã¹ã¿ã€ããã¿ãŒã²ããã«ã§ããŸãã
async function requestSpecificKeyboard() {
try {
const devices = await navigator.hid.requestDevice({
filters: [
{
usagePage: 0x01, // æ±çšãã¹ã¯ãããããŒãž
usage: 0x06 // ããŒããŒã䜿çšç¶æ³
}
]
});
// ... (ããã€ã¹ãåŠçããããã®æ®ãã®ã³ãŒã)
} catch (error) {
console.error("HID ããã€ã¹ã®èŠæ±ãšã©ãŒïŒ", error);
}
}
䜿çšç¶æ³ããŒãžãšäœ¿çšç¶æ³ã®å€ã®æ€çŽ¢ïŒ
- HID 䜿çšç¶æ³ããŒãã«ïŒå ¬åŒã® HID 䜿çšç¶æ³ããŒãã«ïŒUSB Implementers Forum ã«ãã£ãŠå ¬éïŒã¯ãããŸããŸãªããã€ã¹ã¿ã€ãã«å¯ŸããŠæšæºåããã䜿çšç¶æ³ããŒãžãšäœ¿çšç¶æ³ãå®çŸ©ããŸãã
- ããã€ã¹ããã¥ã¡ã³ãïŒããã€ã¹è£œé å ã®ããã¥ã¡ã³ãã«ã¯ãããã€ã¹ã®äœ¿çšç¶æ³ããŒãžãšäœ¿çšç¶æ³ã®å€ãæå®ãããŠããå ŽåããããŸãã
- HID ã¬ããŒãèšè¿°åïŒé«åºŠãªã·ããªãªã§ã¯ãããã€ã¹ã® HID ã¬ããŒãèšè¿°åãåæããŠããµããŒããããŠãã䜿çšç¶æ³ããŒãžãšäœ¿çšç¶æ³ãå€å¥ã§ããŸãã
2. è€æ°ã®ã€ã³ã¿ãŒãã§ãŒã¹ã®åŠç
äžéšã® HID ããã€ã¹ã¯è€æ°ã®ã€ã³ã¿ãŒãã§ãŒã¹ãå ¬éããŠãããããããã«ç¬èªã®æ©èœã»ããããããŸããWebHID API ã¯ãåã€ã³ã¿ãŒãã§ãŒã¹ãåå¥ã® HID ããã€ã¹ãšããŠæ±ããŸããç¹å®ã®ã€ã³ã¿ãŒãã§ãŒã¹ã«ã¢ã¯ã»ã¹ããã«ã¯ãVID/PID ãã£ã«ã¿ãªã³ã°ãšäœ¿çšç¶æ³ããŒãž/䜿çšç¶æ³ãã£ã«ã¿ãªã³ã°ãçµã¿åãããŠãç®çã®ã€ã³ã¿ãŒãã§ãŒã¹ãã¿ãŒã²ããã«ããå¿ èŠãããå ŽåããããŸãã
å®çšçãªäŸãšãŠãŒã¹ã±ãŒã¹
1. ã«ã¹ã¿ã ã²ãŒã ã³ã³ãããŒã©ãŒã€ã³ã¿ãŒãã§ãŒã¹ã®æ§ç¯
ãŠã§ãããŒã¹ã®ã²ãŒã ãæ§ç¯ããŠããŠãã«ã¹ã¿ã ã²ãŒã ã³ã³ãããŒã©ãŒããµããŒãããããšããŸããWebHID API ã䜿çšããŠãã³ã³ãããŒã©ãŒã®ãã¿ã³ããžã§ã€ã¹ãã£ãã¯ããã®ä»ã®ã³ã³ãããŒã«ããçŽæ¥å ¥åãèªã¿åãããšãã§ããŸããããã«ãããå¿çæ§ãé«ããæ²¡å ¥åã®ã²ãŒã äœéšãäœæã§ããŸãã
2. ãŠã§ãããŒã¹ã® MIDI ã³ã³ãããŒã©ãŒã®äœæ
ãã¥ãŒãžã·ã£ã³ãšãªãŒãã£ãªãšã³ãžãã¢ã¯ãããžã¿ã«ãªãŒãã£ãªã¯ãŒã¯ã¹ããŒã·ã§ã³ïŒDAWïŒãŸãã¯ã·ã³ã»ãµã€ã¶ãŒãšå¯Ÿè©±ãããŠã§ãããŒã¹ã® MIDI ã³ã³ãããŒã©ãŒã®æ©æµãåããããšãã§ããŸããWebHID API ã䜿çšãããšããã©ãŠã¶ã§çŽæ¥ MIDI ã¡ãã»ãŒãžãéåä¿¡ããã«ã¹ã¿ã MIDI ã³ã³ãããŒã©ãŒãæ§ç¯ã§ããŸãã
3. ç§åŠæ©åšãšã®å¯Ÿè©±
ç ç©¶è ãšç§åŠè ã¯ãWebHID API ã䜿çšããŠãããŒã¿åéããã€ã¹ãã»ã³ãµãŒã枬å®ããŒã«ãªã©ã®ç§åŠæ©åšãšã€ã³ã¿ãŒãã§ãŒã¹ã§ããŸããããã«ããããŠã§ãããŒã¹ã®ããã·ã¥ããŒããŸãã¯åæããŒã«ã§ããŒã¿ãçŽæ¥åéããã³åæã§ããŸãã
4. ã¢ã¯ã»ã·ããªãã£ã¢ããªã±ãŒã·ã§ã³
WebHID ã¯ãæ¯æŽæè¡ãäœæããæ©äŒãæäŸããŸããããšãã°ãéåé害ã®ãããŠãŒã¶ãŒåãã®ç¹æ®ãªå ¥åããã€ã¹ããŠã§ãã¢ããªã±ãŒã·ã§ã³ã«çŽæ¥çµ±åããŠãããã«ã¹ã¿ãã€ãºãããã¢ã¯ã»ã¹ãããããšã¯ã¹ããªãšã³ã¹ãæäŸã§ããŸããã°ããŒãã«ãªäŸãšããŠã¯ããã³ãºããªãŒããã²ãŒã·ã§ã³çšã®ç¹æ®ãªã¢ã€ãã©ããã³ã°ããã€ã¹ããããŸããŸãªèšèªãšå ¥åæ¹æ³ã§ã·ã³ã°ã«ã¹ã€ããã¢ã¯ã»ã¹çšã®ã«ã¹ã¿ãã€ãºå¯èœãªãã¿ã³é åã®çµ±åãªã©ããããŸãã
ã¯ãã¹ãã©ãŠã¶ã®äºææ§ãšã»ãã¥ãªãã£ã«é¢ããèæ ®äºé
1. ãã©ãŠã¶ã®ãµããŒã
WebHID API ã¯çŸåšãChromium ããŒã¹ã®ãã©ãŠã¶ïŒChromeãEdgeãOperaïŒã§ãµããŒããããŠãããä»ã®ãã©ãŠã¶åãã«éçºäžã§ããã¢ããªã±ãŒã·ã§ã³ã« WebHID API ãå®è£ ããåã«ããã©ãŠã¶ã®äºææ§ã確èªããAPI ããµããŒãããŠããªããã©ãŠã¶çšã®ãã©ãŒã«ããã¯ã¡ã«ããºã ãæäŸããããšãéèŠã§ãã
2. ã»ãã¥ãªãã£ã«é¢ããèæ ®äºé
WebHID API ã¯ã»ãã¥ãªãã£ãèæ ®ããŠèšèšãããŠããŸãããã©ãŠã¶ã¯ããŠã§ãã¢ããªã±ãŒã·ã§ã³ã HID ããã€ã¹ã«ã¢ã¯ã»ã¹ããããšãèš±å¯ããåã«ããŠãŒã¶ãŒã«èš±å¯ãæ±ããŸããããã«ãããæªæã®ãããŠã§ããµã€ãããŠãŒã¶ãŒã®åæãªãã«æ©å¯æ§ã®é«ãããŒããŠã§ã¢ã«ã¢ã¯ã»ã¹ããã®ãé²ããŸããããã«ãWebHID API ã¯ãã©ãŠã¶ã®ã»ãã¥ãªãã£ãµã³ãããã¯ã¹å ã§åäœããã¢ããªã±ãŒã·ã§ã³ã®ã·ã¹ãã ãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹ãå¶éããŸãã
- HTTPS ã®ã¿ïŒWebHID ã¯ãä»ã®åŒ·åãªãŠã§ã API ãšåæ§ã«ãå®å šãªã³ã³ããã¹ãïŒHTTPSïŒã§åäœããå¿ èŠããããŸãã
- ãŠãŒã¶ãŒã®ãžã§ã¹ãã£ãŒïŒããã€ã¹ã¢ã¯ã»ã¹ãèŠæ±ããã«ã¯ãéåžžãäžèŠãªã¢ã¯ã»ã¹èŠæ±ãé²ãããã«ãŠãŒã¶ãŒã®ãžã§ã¹ãã£ãŒïŒäŸïŒãã¿ã³ã¯ãªãã¯ïŒãå¿ èŠã§ãã
- Permissions APIïŒPermissions API ã䜿çšããŠãWebHID ã®ã¢ã¯ã»ã¹èš±å¯ãã¯ãšãªããã³ç®¡çã§ããŸãã
äžè¬çãªåé¡ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°
1. ããã€ã¹ãèŠã€ãããŸãã
ã¢ããªã±ãŒã·ã§ã³ã HID ããã€ã¹ãèŠã€ããããªãå Žåã¯ãVID ãš PID ãå確èªããŠãã ãããããããããã€ã¹ã®å®éã®èå¥åãšäžèŽããããšã確èªããŠãã ããããŸããããã€ã¹ãæ£ããæ¥ç¶ããããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã«ãã£ãŠèªèãããŠããããšã確èªããŠãã ããã
2. ã¢ã¯ã»ã¹èš±å¯ãæåŠãããŸãã
ãŠãŒã¶ãŒã HID ããã€ã¹ãžã®ã¢ã¯ã»ã¹ãæåŠããå Žåãã¢ããªã±ãŒã·ã§ã³ã¯ããã€ã¹ãšéä¿¡ã§ããŸãããã¢ã¯ã»ã¹ãå¿ èŠãªçç±ããŠãŒã¶ãŒã«ã¡ãã»ãŒãžã§è¡šç€ºããŠèª¬æããããšã«ããããã®ã·ããªãªãé©åã«åŠçããŸãããŠãŒã¶ãŒãã¢ããªã±ãŒã·ã§ã³ãšå¯Ÿè©±ããããã®ä»£æ¿ææ®µãæäŸããããšãæ€èšããŠãã ããã
3. ããŒã¿åœ¢åŒã®åé¡
HID ããã€ã¹ã¯ãããŒã¿ã®éåä¿¡ã«ã«ã¹ã¿ã ããŒã¿åœ¢åŒã䜿çšããããšããããããŸããããã€ã¹ã®ããŒã¿åœ¢åŒãçè§£ããã¢ããªã±ãŒã·ã§ã³ã§é©åãªè§£æããã³ã·ãªã¢ã«åããžãã¯ãå®è£ ããå¿ èŠããããŸããããŒã¿åœ¢åŒã«ã€ããŠã¯ãããã€ã¹è£œé å ã®ããã¥ã¡ã³ããåç §ããŠãã ããã
çµè«
WebHID API ã¯ããã¥ãŒãã³ã€ã³ã¿ãŒãã§ãŒã¹ããã€ã¹ãšçŽæ¥éä¿¡ãã驿°çã§ã€ã³ã¿ã©ã¯ãã£ããªãŠã§ãã¢ããªã±ãŒã·ã§ã³ããŠã§ãéçºè ãäœæã§ããããã«ããŸããããã€ã¹åæããã£ã«ã¿ãªã³ã°ãããã³æ¥ç¶ç®¡çã®ååãçè§£ããããšã§ãWebHID API ã®å¯èœæ§ãæå€§éã«åŒãåºããé åçãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãäœæã§ããŸããWebHID ã®åãæŽ»çšããŠãŠã§ããç©çäžçã«æ¥ç¶ããäžçäžã®åµé æ§ãçç£æ§ãã¢ã¯ã»ã·ããªãã£ã®æ°ããªå¯èœæ§ãè²ã¿ãŸãããã